package com.fsm.demo.service;

import com.fsm.common.tools.Result.Result;
import com.mybatisflex.core.service.IService;
import com.fsm.demo.entity.ClientInfo;
import com.fsm.demo.entity.excelbo.ClientInfoBo;
import io.swagger.v3.oas.annotations.Operation;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import jakarta.servlet.http.HttpServletResponse;
/**
 *  客户信息服务层。
 *
 * @author 翻山鸣
 * @since
 */
public interface ClientInfoService extends IService<ClientInfo> {

    /**
     * 添加客户信息
     *
     * @param clientInfo
     * @return
     */
    Result addClientInfo(ClientInfo clientInfo) throws Exception;

    /**
    * 逻辑删除客户信息
    *
    * @param clientInfo
    * @return
    */
    Result logicDeleteClientInfo(ClientInfo clientInfo) throws Exception;

    /**
     * 删除客户信息
     *
     * @param clientInfo
     * @return
     */
    Result deleteClientInfo(ClientInfo clientInfo) throws Exception;

    /**
     * 更新客户信息
     *
     * @param clientInfo
     * @return
     */
    Result updateClientInfo(ClientInfo clientInfo) throws Exception;

    /**
     * 分页查询客户信息
     *
     * @param clientInfo
     * @return
     */
    Result pageClientInfo(ClientInfo clientInfo) throws Exception;

    /**
     * 查询客户信息列表
     *
     * @param clientInfo
     * @return
     */
    Result getClientInfoList(ClientInfo clientInfo) throws Exception;

    /**
     * 通过ID查询客户信息
     *
     * @param clientInfo
     * @return
     */
    Result getClientInfoById(ClientInfo clientInfo) throws Exception;

    /**
     * 导出信息
     *
     * @param
     * @return 分页对象
     */
    public Result uploadClientInfoData(ClientInfo clientInfo, HttpServletResponse response) throws Exception;


    /**
    * 冻结客户信息
    *
    * @param clientInfo
    * @return
    */
    Result freezeClientInfo(ClientInfo clientInfo) throws Exception;

    /**
    * 解冻客户信息
    *
    * @param clientInfo
    * @return
    */
    Result thawClientInfo(ClientInfo clientInfo) throws Exception;
    /**
    * 审核通过客户信息
    *
    * @param clientInfo
    * @return
    */
    Result approvedClientInfo(ClientInfo clientInfo) throws Exception;

    /**
    * 审核驳回客户信息
    *
    * @param clientInfo
    * @return
    */
    Result reviewClientInfo(ClientInfo clientInfo) throws Exception;

}
